package com.zmn.oms.model.dto.work.erp;

import com.zmn.oms.model.dto.work.OrderPartSettleSubjectInfo;
import com.zmn.oms.model.entity.discount.OrderDiscount;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author sunlife
 * @date:2020/9/15 11:22 上午
 * description:新单算账信息
 */
@Data
@ToString(callSuper = true)
public class NewOrderAccountInfoDTO implements Serializable {

    private static final long serialVersionUID = 4960651336279222977L;
    /**
     * 订单Id
     */
    private Long orderId;

    /**
     * 工单Id
     */
    private Long workId;

    /**
     * 订单类型
     * 1新单，2返修单，3退款单'
     */
    private Integer orderType;

    /**
     * 下单时间
     */
    private Date receiveTime;

    /**
     * 派单时间
     */
    private Date distributeTime;

    /**
     * 上门时间
     */
    private Date visitTime;

    /**
     * 订单完成时间
     */
    private Date completeTime;

    /**
     * 下单城市id
     */
    private Integer orderCityId;

    /**
     * 下单城市名字
     */
    private String orderCityName;

    /**
     * 服务平台标志：10:啄木鸟 20:言而有信 30:一步维修 40:川南环保
     */
    private Integer plat;

    /**
     * 下单平台标志：10:啄木鸟 20:言而有信 30:一步维修 40:川南环保
     */
    private Integer platSource;

    /**
     * 订单业务类型：1保外业务（C），2保内业务（F），3工程业务（B）
     */
    private Integer bizType;

    /**
     * 业务模式：1平台，自营
     */
    private Integer bizMode;

    /**
     * 下单业务模式：1平台，自营
     */
    private Integer bizModeSource;

    /**
     * 子公司id
     */
    private Integer subCompanyId;

    /**
     * 子公司名字
     */
    private String subCompanyName;

    /**
     * 订单服务公司id
     */
    private Integer spCompanyId;

    /**
     * 订单服务公司名字
     */
    private String spCompanyName;

    /**
     * 服务分类Id
     */
    private Integer servCategId;

    /**
     * 服务分类名称
     */
    private String servCategName;

    /**
     * 产品分组id
     */
    private Integer productGroupId;

    /**
     * 产品分组id
     */
    private String productGroupName;

    /**
     * 订单渠道id
     */
    private Integer channelId;

    /**
     * 订单渠道名称
     */
    private String channelName;

    /**
     * 主工程师行车距离，从工程师不考虑此字段
     */
    private Integer distanceValue;

    /**
     * 订单金额
     */
    private Integer originalAmount;

    /**
     * 内部结算价
     */
    private Integer internalStatementAmount;

    /**
     * 外部结算价
     */
    private Integer outStatementAmount;

    /**
     * 订单次卡金额
     */
    private Integer timesCardAmount;

    /**
     * 订单工程师集合
     */
    private List<OrderAccountEngineerDTO> engineers;

    /**
     * 订单类型（1 普通，2厂商 3 大客户 4 会员）
     */
    private Integer orderSourceType;

    /**
     * 订单支付列表
     */
    private List<OrderAccountPayDTO> orderPayList;


    /**
     * 订单客户ID
     */
    private Long userId;

    /**
     * 订单客户姓名
     */
    private String userName;


    /**
     * 产品主管id
     */
    private Integer engSupervisorId;


    /**
     * 产品主管名字
     */
    private String engSupervisorName;

    /**
     * 厂商id
     */
    private Integer factoryId;

    /**
     * 订单所有配件费总和
     */
    private Integer partAmount;

    /**
     * 订单优惠金额
     */
    private Integer discountAmount;

    /**
     * 支付优惠
     */
    @ApiModelProperty("支付优惠金额")
    private Integer paymentDiscountAmount;

    /**
     * 订单优惠明细
     */
    private List<OrderDiscount> discountList;

    /**
     * 订单是否成功
     */
    @ApiModelProperty("订单状态")
    private Boolean orderSuccessful;

    /**
     * 产品信息
     */
    private String productInf;

    /**
     * 配件报销状态 1.无需报销、2.待报销、3.报销成功、4.报销失败 5.不予报销
     * @see com.zmn.oms.common.constant.OrderConsts#PART_REIMBURSE_STATUS_NONE
     */
    private Integer partsReimburseStatus;
    @ApiModelProperty("特殊加单标识")
    private Boolean specialAddOrder;

    /**
     * 工单绩效剔除标记
     */
    private Boolean eliminateTag;

    /**
     * 一口价 1 否 2 是
     */
    private Integer finalPrice;

    /**
     * 一口价 服务项类型Id
     */
    private Integer itemTypeId;

    /**
     * 服务项类型名称
     */
    private String itemTypeName;
}
